//配置axios

import axios from "axios";
//引入element-ui的弹框组件
import { MessageBox } from "element-ui";
//引入storage方法
import storage from "@/utils/storages";
let http = axios.create({
  baseURL: "/api",
  timeout: 5000, //超时设置
  withCredentials: true //携带本地凭据 比如cookie
});

//全局的请求拦截器 对接口的请求批量处理
http.interceptors.request.use((config) => {
  //先获取本地的token，然后携带给后端
  let token = storage.get("vue2token");
  // console.log(token);
  config.headers["authorization"] = token;
  //config就是所有的请求配置
  return config; //放行  如果不return 那么不能将请求真正发送出去
});

//全局响应拦截器  对错误统一处理（比如报错弹窗）
http.interceptors.response.use((config) => {
  console.log("config", config);
  let { state, msg } = config.data;
  if (!state) {
    //后台响应了错误的结果 ui组件弹框
    MessageBox({
      message: msg,
      title: "错误提示",
      type: "error"
    });
  }
  return config; //如果不return axios请求拿不到响应的结果
});

export default http;
